#ifndef LNUMBER_PTR
#define LNUMBER_PTR

#include"LargeNumber.h"


struct LargeNumberPtr {
    LargeNumberPtr();
    explicit LargeNumberPtr(LargeNumber * ptr);
    ~LargeNumberPtr();
    LargeNumberPtr(LargeNumberPtr const & copy);
    LargeNumber & operator=(LargeNumberPtr const & right);
    void operator=(LargeNumber * right);
    LargeNumber * operator->() const;
    LargeNumber & operator*() const;
    bool operator==(LargeNumberPtr const & right) const;
    bool operator!=(LargeNumberPtr const & rigth) const;
    bool operator>(LargeNumberPtr const & rigth) const;
    bool operator<(LargeNumberPtr const & rigth) const;
    bool operator>=(LargeNumberPtr const & rigth) const;
    bool operator<=(LargeNumberPtr const & rigth) const;
    bool operator==(LargeNumber * right) const;
    LargeNumber * getPointer() const;
    void swap(LargeNumberPtr & right);
private:
    LargeNumber * ptr_;
    int * copy_counter_;
};

#endif